/**
 * On-the-fly variable definitions
 *
 * @author fireway
 * @since 2019年 06月 01日 星期六 09:07:11 CST
 */
#include <iostream>

using namespace std;

int main()
{
    //..
    {
        // Begin a new scope
        int q = 0; // C requires definitions here
        //..
        // Define at point of use:
        for(int i = 0; i < 100; i++)
        {
            q++; // q comes from a larger scope
            // Definition at the end of the scope:
            // 这里表明可以在任何地方定义一个变量
            int p = 12;
        }
        int p = 1;  // A different p
    } // End scope containing q & outer p

    cout << "Type characters:" << endl;
    // 不可以写成 while((char c = cin.get()) != 'q')
    while(char c = cin.get() != 'q')
    {
        cout << c << " wasn't it" << endl;
        if(char x = c == 'a' || c == 'b')
        {
            cout << "You typed a or b" << endl;
        }
        else
        {
            cout << "You typed " << x << endl;
        }
    }

    cout << "Type A, B, or C" << endl;
    switch(int i = cin.get())
    {
        case 'A':
            cout << "Snap" << endl;
            break;
        case 'B':
            cout << "Crackle" << endl;
            break;
        case 'C':
            cout << "Pop" << endl;
            break;
        default:
            cout << "Not A, B or C!" << endl;
    }

    return 0;
}
